package com.microlearning.common.rabbitmq.publisher;

import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

/**
 * Direct(订阅)交换机：基于路由key发送给订阅了消息的对列
 * 特点：
 *      1、队列与交换机绑定，不能是任意绑定了，而是要指定一个路由key
 *      2、消息的发送方向Exchange发送消息时，也必须指定消息的路由key
 *      3、交换机不再把消息交给每一个绑定的队列，而是根据消息的路由key进行判断，只有队列的路由key与消息的路由key完全一致，才会收到消息
 */
@Service
public class DirectPublisher {

    RabbitTemplate rabbitTemplate;

    @Autowired
    public DirectPublisher(RabbitTemplate rabbitTemplate) {
        this.rabbitTemplate = rabbitTemplate;
    }

    /**
     * 交换机名称
     */
    static String exchangeName = "mic.direct";
    /**
     * 消息内容
     */
    static String message = "mic.helloDirect";

    /**
     * 发送消息到交换机
     */
    public void pushMessage(String exchangeName, String routing, String message) {
        rabbitTemplate.convertAndSend(exchangeName, routing, message);
    }


}
